gtksearchentry: Consume click events after pressing on icon
authorCarlos Garnacho <carlosg@gnome.org>
Mon, 23 Aug 2021 13:30:21 +0000 (15:30 +0200)
committerCarlos Garnacho <carlosg@gnome.org>
Mon, 23 Aug 2021 13:38:33 +0000 (15:38 +0200)
This results in user actions, so the gesture should consume the
events.

gtk/gtksearchentry.c

index 6a9d3c896913dbfd4ccc7844df4855e3bb719eb4..ebee7426224868b75867d64bd3f30282af5df6f6 100644 (file)
@@ -490,6 +490,16 @@ gtk_search_entry_accessible_init (GtkAccessibleInterface *iface)
   iface->get_platform_state = gtk_search_entry_accessible_get_platform_state;
 }
 
+static void
+gtk_search_entry_icon_press (GtkGestureClick *press,
+                             int              n_press,
+                             double           x,
+                             double           y,
+                             GtkSearchEntry  *entry)
+{
+  gtk_gesture_set_state (GTK_GESTURE (press), GTK_EVENT_SEQUENCE_CLAIMED);
+}
+
 static void
 gtk_search_entry_icon_release (GtkGestureClick *press,
                                int              n_press,
@@ -601,6 +611,7 @@ gtk_search_entry_init (GtkSearchEntry *entry)
   gtk_widget_set_child_visible (entry->icon, FALSE);
 
   press = gtk_gesture_click_new ();
+  g_signal_connect (press, "pressed", G_CALLBACK (gtk_search_entry_icon_press), entry);
   g_signal_connect (press, "released", G_CALLBACK (gtk_search_entry_icon_release), entry);
   gtk_widget_add_controller (entry->icon, GTK_EVENT_CONTROLLER (press));